home *** CD-ROM | disk | FTP | other *** search
- /*
- * @(#) util.c 12.1 95/05/09 SCOINC
- */
- /***************************************************************************
- *
- * Copyright (c) 1990-1993 The Santa Cruz Operation, Inc.
- *
- * All rights reserved. No part of this program or publication may be
- * reproduced, transmitted, transcribed, stored in a retrieval system,
- * or translated into any language or computer language, in any form or
- * by any means, electronic, mechanical, magnetic, optical, chemical,
- * biological, or otherwise, without the prior written permission of:
- *
- * The Santa Cruz Operation , Inc. (408) 425-7222
- * 400 Encinal St., Santa Cruz, California 95060 USA
- *
- **************************************************************************/
- /*
- * Modification History
- * S004, 15-Sep-93, rickra
- * Minor bug fix...
- *
- * S003, 01-June-93, rickra
- * Moved a debugging comment inside the #define for debugging....
- *
- * S002, 27-May-93, rickra
- * User color was set wrong.....
- *
- * S001, 27-May-93, rickra
- * Moved some functions here....
- * Create a common interface to read/write to server....
- *
- * S000, 30-Sep-92, rickra
- * Added copyright and modification history
- */
- /*+-------------------------------------------------------------------------
- util.c - XSW utility functions
-
- Defined functions:
- basename(fullname)
- get_elapsed_time(elapsed_seconds)
-
- --------------------------------------------------------------------------*/
-
- #include <sys/types.h>
- #include <X11/Intrinsic.h>
- #include <Xm/Text.h>
- #include <Xm/Xm.h>
- #include "include/unixincs.h"
- #include "include/buttons.h"
- #include "include/xsw.h"
-
-
- extern struct NetworkXswStruct *selected_server;
- extern Widget message_text_widget;
- extern Widget actual_interval_text_widget;
- extern Widget target_interval_text_widget;
- extern Widget user_text_widget;
- extern Widget TOGGLE_BUTTONS_WIDGETS[Max_state_buttons];
-
- extern int errno;
-
-
- void
- display_network_msg (server_pointer, message)
- struct NetworkXswStruct *server_pointer;
- char *message;
- {
-
- int argcount;
- Arg args[5];
-
-
- if (server_pointer != NULL)
- server_pointer -> message = message;
-
- argcount = 0;
- XtSetArg (args[argcount], XmNcursorPosition, strlen (message));
- argcount++;
- XtSetArg (args[argcount], XmNforeground, colorDisplayMsg.pixel);
- argcount++;
- XtSetArg (args[argcount], XmNvalue, message);
- argcount++;
- XtSetValues (message_text_widget, args, argcount);
-
- XmTextShowPosition (message_text_widget, strlen (message));
-
-
- }
-
- void
-
- clear_StatPeriod ()
-
- {
- Arg args[5];
- int argcount;
-
-
- argcount = 0;
- XtSetArg (args[argcount], XmNcursorPosition, strlen (""));
- argcount++;
- XtSetArg (args[argcount], XmNvalue, "");
- argcount++;
- XtSetValues (actual_interval_text_widget, args, argcount);
-
- XmTextShowPosition (actual_interval_text_widget, strlen (""));
-
- }
-
- void
- clear_StatCycle ()
-
- {
- Arg args[5];
- int argcount;
-
- argcount = 0;
- XtSetArg (args[argcount], XmNcursorPosition, strlen (""));
- argcount++;
- XtSetArg (args[argcount], XmNvalue, "");
- argcount++;
- XtSetValues (target_interval_text_widget, args, argcount);
-
- XmTextShowPosition (target_interval_text_widget, strlen (""));
-
-
- }
-
- /*+-------------------------------------------------------------------------
- clear_Users()
- --------------------------------------------------------------------------*/
- void
- clear_Users ()
- {
-
- char users[12];
- Arg args[32];
- int argcount;
-
-
- argcount = 0;
- XtSetArg (args[argcount], XmNcursorPosition, strlen (""));
- argcount++;
- XtSetArg (args[argcount], XmNvalue, "");
- argcount++;
- XtSetValues (user_text_widget, args, argcount);
-
- } /* end of update_Users */
-
-
-
-
- /*+-------------------------------------------------------------------------
- update_StatPeriod()
- --------------------------------------------------------------------------*/
- void
- update_StatPeriod (server_pointer)
- struct NetworkXswStruct *server_pointer;
- {
- char msecstr[32];
- int pct = 0;
- unsigned long pixel;
- Arg args[32];
- int argcount;
-
- if (server_pointer != NULL)
- {
-
- if (server_pointer == selected_server)
- {
- pct = (server_pointer -> StatPeriod_msec * 100) / server_pointer -> StatCycle_msec;
-
- if (server_pointer -> StatPeriod_msec < 50)
- strcpy (msecstr, "--------");
- else
- sprintf (msecstr, "%7ldms", server_pointer -> StatPeriod_msec);
-
- if ((pct < 70) || (pct > 130))
- pixel = colorActualIntervalAlarm.pixel;
- else if ((pct < 90) || (pct > 110))
- pixel = colorActualIntervalWarning.pixel;
- else
- pixel = colorActualInterval.pixel;
-
- argcount = 0;
- XtSetArg (args[argcount], XmNcursorPosition, strlen (msecstr));
- argcount++;
- XtSetArg (args[argcount], XmNforeground, pixel);
- argcount++;
- XtSetArg (args[argcount], XmNvalue, msecstr);
- argcount++;
- XtSetValues (actual_interval_text_widget, args, argcount);
-
- XmTextShowPosition (actual_interval_text_widget, strlen (msecstr));
-
- }
- }
-
- } /* end of update_StatPeriod */
-
-
- /*+-------------------------------------------------------------------------
- update_StatCycle()
- --------------------------------------------------------------------------*/
- void
- update_StatCycle (server_pointer)
- struct NetworkXswStruct *server_pointer;
- {
- char msecstr[80];
- char current_target[80];
-
- char *current_target2;
-
- Arg args[32];
- int argcount;
- XmString message;
-
- int temp;
- int temp1;
- int temp3;
- int x;
- int y;
-
-
- if (server_pointer != NULL)
- {
- if (server_pointer == selected_server)
- {
-
- sprintf (msecstr, "%6ldms", server_pointer -> StatCycle_msec);
- message = XmStringCreateSimple (msecstr);
-
- /*
- argcount = 0;
- XtSetArg (args[argcount], XmNvalue, ¤t_target);
- argcount++;
- XtGetValues (target_interval_text_widget, args, argcount);
-
- argcount = 0;
- XtSetArg (args[argcount], XmNvalue, current_target2);
- argcount++;
- XtGetValues (target_interval_text_widget, args, argcount);
-
- fprintf(stdout,"Current target = %s\n",current_target);
- fprintf(stdout,"Current target2 = %s\n",current_target2);
- free(current_target2);
-
- if (strcmp(current_target,msecstr) == 0 )
- {
- fprintf(stdout,"Target is the same!!!");
-
- }
- else
- fprintf(stdout,"Target is NOT the same!!!");
- */
-
-
- argcount = 0;
- XtSetArg (args[argcount], XmNcursorPosition, strlen (msecstr));
- argcount++;
- XtSetArg (args[argcount], XmNforeground, colorInterval.pixel);
- argcount++;
- XtSetArg (args[argcount], XmNvalue, msecstr);
- argcount++;
- XtSetValues (target_interval_text_widget, args, argcount);
-
- XmTextShowPosition (target_interval_text_widget, strlen (msecstr));
- }
- }
- } /* end of update_StatCycle */
-
- /*+-------------------------------------------------------------------------
- update_Users(server_pointer)
- --------------------------------------------------------------------------*/
- void
- update_Users (server_pointer)
- struct NetworkXswStruct *server_pointer;
- {
-
- char users[12];
- Arg args[32];
- int argcount;
-
-
- if (server_pointer != NULL)
- {
-
- if (server_pointer == selected_server)
- {
- sprintf (users, "%7d", server_pointer -> user_data_pointer);
-
- argcount = 0;
- XtSetArg (args[argcount], XmNcursorPosition, strlen (users));
- argcount++;
- XtSetArg (args[argcount], XmNforeground, colorUser.pixel);
- argcount++;
- XtSetArg (args[argcount], XmNvalue, users);
- argcount++;
- XtSetValues (user_text_widget, args, argcount);
- }
- }
-
- } /* end of update_Users */
-
-
-
- void
- toggle_button_reset (w, client_data, call_data)
- Widget w;
- caddr_t client_data;
- XmAnyCallbackStruct *call_data;
- {
- Arg args[2];
- int argcount;
- int button_num = (int) client_data;
-
- argcount = 0;
- XtSetArg (args[argcount], XmNset, False);
- argcount++;
- XtSetValues (TOGGLE_BUTTONS_WIDGETS[button_num], args, argcount);
-
- }
-
-
- /*+-------------------------------------------------------------------------
- basename(fullname) - strip directory name from filename
-
- returns address of static string
- --------------------------------------------------------------------------*/
- char *
- basename (fullname)
- char *fullname;
- {
- register char *start;
- static char outstr[256];
- char *strrchr ();
-
- start = strrchr (fullname, '/'); /* find last slash */
- if (!start)
- return (fullname);
- start++;
- strcpy (outstr, start);
- return (outstr);
- } /* end of basename */
-
- #ifdef get_elapsed_time
- /*+-----------------------------------------------------------------------
- char *get_elapsed_time(elapsed_seconds) - "ddd+hh:mm:ss" returned
- static string address is returned
- ------------------------------------------------------------------------*/
- char *
- get_elapsed_time (elapsed_seconds)
- time_t elapsed_seconds;
- {
- static char elapsed_time_str[32];
- time_t dd, hh, mm, ss;
-
- dd = 0;
- hh = elapsed_seconds / 3600;
- if (hh > 24)
- {
- dd = hh / 24;
- elapsed_seconds -= dd * 3600 * 24;
- hh %= 24;
- }
- elapsed_seconds -= hh * 3600;
- mm = elapsed_seconds / 60L;
- elapsed_seconds -= mm * 60L;
- ss = elapsed_seconds;
-
- if (dd)
- (void) sprintf (elapsed_time_str, "%3ld+%02ld:%02ld:%02ld", dd, hh, mm, ss);
- else
- (void) sprintf (elapsed_time_str, " %2ld:%02ld:%02ld", hh, mm, ss);
- return (elapsed_time_str);
- } /* end of get_elapsed_time */
-
- #endif
-
- char *
- cs_to_rs (cs)
- XmString cs;
- {
- XmStringContext context;
- XmStringCharSet charset;
- XmStringDirection direction;
- Boolean separator;
- char *primitive_string;
-
- XmStringInitContext (&context, cs);
- XmStringGetNextSegment (context, &primitive_string,
- &charset, &direction, &separator);
- XmStringFreeContext (context);
- return (primitive_string);
- }
-
- xsw_write (server_pointer, FD, data_wanted, data_size)
- struct NetworkXswStruct *server_pointer;
- int FD;
- int data_wanted;
- int data_size;
-
- {
- int result;
- /*
- fprintf (stdout, "data_wanted = %d\n",data_wanted);
-
- if ( server_pointer -> connected == 0 )
- fprintf (stdout, "server_pointer = 0!!!\n");
- */
-
- if (server_pointer != NULL)
- {
- /*
- * If we are still in contact with the server.....
- */
-
- if (server_pointer -> connected)
- {
-
- result = write (FD, &data_wanted, data_size);
-
- if (result < 0)
- {
- server_pointer -> connected = 0;
- #ifdef DEBUG_NET_READ
- fprintf (stdout, "SHIT\n");
- #endif
- }
- else
- {
-
- }
- }
- }
-
- }
-
-
- xsw_read (server_pointer, FD, data_pointer, data_size)
- struct NetworkXswStruct *server_pointer;
- int FD;
- char *data_pointer;
- int data_size;
-
- {
-
- int bytes_read = 1;
- int total_read = 0;
-
- #ifdef DEBUG_NET_READ
- fprintf (stdout, "Data size = %d\n", data_size);
- #endif
-
-
- /*
- if (server_pointer -> connected == 0)
- fprintf (stdout, "server_pointer = 0!!!\n");
- */
-
-
- if (server_pointer != NULL)
- {
-
- while ((total_read != data_size) && (bytes_read > 0))
- {
-
- /*
- * Read in, starting at address "data_pointer" + "offset"
- */
-
- bytes_read = read (FD,
- data_pointer + total_read,
- data_size);
-
- #ifdef DEBUG_NET_READ
- fprintf (stdout, "bytes_read= %d\n", bytes_read);
- #endif
-
- if (bytes_read <= 0)
- {
- server_pointer -> connected = 0;
- #ifdef DEBUG_NET_READ
- fprintf (stdout, "OHOH\n");
- #endif
-
- }
-
- else
- {
-
- total_read += bytes_read;
-
- }
-
- #ifdef DEBUG_NET_READ
- fprintf (stdout, "total_read = %d\n", total_read);
- #endif
-
- }
-
- }
-
- }
-
-
-
- /* vi: set tabstop=4 shiftwidth=4: */
- /* end of util.c */
-